package com.example.app.manager

import androidx.collection.arrayMapOf
import androidx.multidex.BuildConfig
import com.blankj.utilcode.util.LogUtils
import com.example.app.global.GlobalUserManager
import com.libcommon.GlobalPath


/**
 * CreateBy:Joker
 * CreateTime:2023/5/5 14:22
 * description：
 */
object LogManager {

    fun init() {
        LogUtils.getConfig().apply {
            isLogSwitch = true                                //设置 log 总开关
            setConsoleSwitch(BuildConfig.DEBUG)               //设置 log 控制台开关
            globalTag = "DEBUG_LOG"                           //设置 log 全局 tag
            isLogHeadSwitch = true                            //设置 log 头部信息开关
            isLog2FileSwitch = true                           //设置 log 文件开关
            dir = GlobalPath.getLogPath()                     //设置 log 文件存储目录
            saveDays = 5                                      //保存天数
            filePrefix = ""                                   //设置 log 文件前缀
            setFileFilter(LogUtils.I)
            setBorderSwitch(false)                            //设置 log 边框开关
            addFileExtraHead(arrayMapOf("uid" to "${GlobalUserManager.getUid()}"))
//            isSingleTagSwitch = true                        //设置 log 单一 tag 开关（为美化 AS 3.1 的 Logcat）
//            setOnConsoleOutputListener { type, tag, content ->
//                Log.i("LogManager", "type=$type tag=$tag content=$content")
//            }
//            setOnFileOutputListener { filePath, content ->
//                Log.i("LogManager", "filePath=$filePath content=$content")
//            }
        }
    }

//    fun checkLogFile(owner: LifecycleOwner?, data: LogUploadEntity?) {
//        //检查日志时间
//        workIO {
//            runCatching {
//                //上传业务
//                safeLet(owner, data) { p1, p2 ->
//                    when (p2.type) {
//                        //云信
//                        2 -> {
//                            val nimFile = FileUtils.getFileByPath("${GlobalPath.getNimPath()}/log/nim_sdk.log")
//                            uploadLogFile(p1, listOf(nimFile))
//                        }
//                        //声网
//                        3 -> {
//                            val agoraFile = FileUtils.getFileByPath("${GlobalPath.getAgoraLogPath()}/agora-rtc.log")
//                            uploadLogFile(p1, listOf(agoraFile))
//                        }
//
//                        //自己业务
//                        else -> {
//                            uploadLogFile(p1, FileUtils.listFilesInDir(GlobalPath.getLogPath()))
//                        }
//                    }
//                }
//            }
//        }
//    }
//
//    /**
//     * 日志上传
//     */
//    private fun uploadLogFile(owner: LifecycleOwner, file: List<File>) {
//        workIO {
//            //临时zip文件地址
//            val targetPath = GlobalPath.getLogZipPath()
//            FileUtils.deleteFilesInDir(targetPath)
//            val zipFile = FileUtils.getFileByPath("$targetPath/log.zip")
//            FileUtils.createOrExistsFile(zipFile)
//            ZipUtils.zipFiles(file, zipFile)
//
//            reqUpload(owner, zipFile)
//        }
//    }
//
//    private fun reqUpload(owner: LifecycleOwner, zipFile: File) {
//        HttpManager.uploadFile<FileResultEntity>(owner, HttpURL.URL_FILE_UPLOAD, zipFile, arrayMapOf("busType" to 6)) { code, data, _ ->
//            //上传成功，上报给服务后台
//            if (code == HttpManager.CODE_SUCCESS) {
//                HttpManager.postForm<Any>(owner, HttpURL.URL_LOG_UPLOAD, arrayMapOf("url" to data?.url))
//                workIO { FileUtils.delete(zipFile) }
//            }
//        }
//    }
}